/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.compassion.action;

import com.opensymphony.xwork2.ActionContext;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Date;
import sv.com.compassion.dao.GenericoDAO;
import sv.com.compassion.entidades.Actividad;
import sv.com.compassion.util.ComunAction;
import sv.com.compassion.util.Constantes;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import sv.com.compassion.util.Fecha;
import sv.com.compassion.util.JqGrid;
import sv.com.compassion.util.RowsGrid;

/** Se define la interacción del mantenimiento Asistencia (Primer grid donde desglosa
 * actividades y tutores)
 * @author geovany
*/
public class Asistencia1Action extends ComunAction {
    private GenericoDAO genericoDAO;
    private Actividad actividad;
    private String nomAct;
    private String idCdi;
    private String idRanEdad;
    private String idTipAct;
/**
 *Constructor.  
 *@param GenericoDAO interface donde se encuentran los métodos para acceder a 
 * a la clase entidad Asistencia. 
 */ 
public Asistencia1Action(GenericoDAO genericoDAO){
        this.genericoDAO = genericoDAO;
}  

/**
 * Buscar el método que se ejecutara
 */
@Override
public String execute(){
    buscarMetodo(actividad);        
    return null;
}
       
    @Override    
    public void agregarEntidad(Object o) {
    }
    
    @Override
    public void borrarEntidad(Object o) {
    }
    
    @Override
    public void editarEntidad(Object o) {
    }
 /**
 * Este método hace las búsquedas de actividades para llenar el grid del mantenimiento Asistencia
 * esperando los valores de los filtros:
 *       nomAct,
 *       idCdi,
 *       idRanEdad,
 *       idTipAct 
 */   
    
    
    @Override
    public void alimentarGrid() {
        JqGrid jg = new JqGrid();
        int total = 0;
        
        Map session = ActionContext.getContext().getSession();
        String idUsuario = session.get("idUsuario").toString();
        String idCargo = session.get("idCargo").toString();
        
        List<Actividad> listaActividad = null;
        String query="";
        nomAct = getRequest().getParameter("NomAct");
        idCdi = getRequest().getParameter("IdCdi");
        idRanEdad = getRequest().getParameter("IdRanEda");
        idTipAct = getRequest().getParameter("IdTipAct");

        String nomActquery = "";
        String queryIdCdi = "";
        String queryIdRanEdad = "";
        String queryIdTipAct = "";

        String queryAux = "";
        if(idCargo.equals("6") || idCargo.equals("7") || idCargo.equals("8") || idCargo.equals("9")){
            queryAux = "a.idTutor IN (SELECT t.idTutor FROM Tutor t WHERE t.idCdi IN (SELECT x.idCdi FROM Asociacion x WHERE x.idEmpleado = '" + idUsuario + "')) and ";
        }
        nomActquery = "a.nomActividad like upper('%" + nomAct + "%') ";
        if(!idCdi.equals("") || !idRanEdad.equals("") || !idTipAct.equals("")){
            if(!idCdi.equals("")){
                queryIdCdi = "and a.idTutor IN (SELECT t.idTutor FROM Tutor t WHERE t.idCdi = '" + idCdi + "' ";
            }
            if(!idRanEdad.equals("")){
                queryIdRanEdad = "and a.idranEdad  = '" + idRanEdad + "' ";
            }
            if(!idTipAct.equals("")){
                queryIdTipAct = "and a.idTipoActividad = '" + idTipAct + "' ";
            }
        }
        try{
                if(getSearch()!= null && getSearch().equals("true")){
                    /*query = "SELECT a FROM Actividad a  where";
                    
                    if(getNomActividad()!=null){
                        query += " upper(a.nomActividad) like upper('%"+ getNomActividad() +"%') and  ";
                    }
                    if(getDesActividad()!=null){
                        query += " upper(a.desActividad) like upper('%"+getDesActividad()+"%') and  ";
                    }
                    if(getFecFinalizacion()!=null){
                        query += " a.fecFinalizacion = '"+Fecha.date2String(Fecha.string2Date(getFecFinalizacion()),"yyyy-MM-dd")+"' and  ";
                    }
                    query = query.substring(0, query.length()-5)+" order by a.fecFinalizacion "+getSord();
                    listaActividad = genericoDAO.find(query,getRows(),(getRows()*getPage())-getRows());*/
                }else{
                    query = "SELECT a FROM Actividad a WHERE " +
                                queryAux + 
                                nomActquery +
                                queryIdCdi +
                                queryIdRanEdad +
                                queryIdTipAct +
                                "and a.estActividad = 1"
                                + " ORDER BY a.nomActividad " + getSord();
                }

                listaActividad = genericoDAO.find(query,getRows(),(getRows()*getPage())-getRows());
                query = "SELECT COUNT(a) FROM Actividad a WHERE " +
                                queryAux + 
                                nomActquery +
                                queryIdCdi +
                                queryIdRanEdad +
                                queryIdTipAct +
                                "and a.estActividad = 1";
                total = genericoDAO.countRow(query);
                //configuraciones basicas
                jg.setPage(getPage());
                jg.setRecords(total);
                jg.setTotal((int) Math.ceil((double) total / (double) getRows()));
                jg.setSord(getSord());
                jg.setSidx(getSidx());
                List<RowsGrid> rows = new ArrayList<RowsGrid>();
                
                for(Actividad a: listaActividad){
                    RowsGrid r = new RowsGrid(); 
                    r.setId(a.getIdActividad().toString());
                    List cell = new ArrayList();
                    
                    cell.add(a.getNomActividad());

                    cell.add(a.getIdTipoActividad().getIdTipoActividad());
                    cell.add(a.getIdTipoActividad().getNomActividad());
                    
                    cell.add(a.getIdranEdad().getIdRangoEdad());
                    cell.add(a.getIdranEdad().getNomRangoEdad());
                    
                    cell.add(a.getIdAula().getIdAula());
                    cell.add(a.getIdAula().getNomAula());
                    
                    cell.add(a.getIdTutor().getIdTutor());
                    cell.add(a.getIdTutor().getNomTutor() + " " + a.getIdTutor().getApeTutor());
                    
                    r.setCell(cell);
                    rows.add(r);                    
                }
                

                jg.setRows(rows);
                JSONObject jo = JSONObject.fromObject(jg);
                enviarJsonNavegador(getResponse(), jo);
        }catch(Exception e){
            Logger.getLogger(ActividadAction.class.getName()).log(Level.SEVERE, null, e);
            enviarMensajeStatic(Constantes.MENSAJE_ERROR+e.getCause().toString(), getResponse());
        }
    }
 public Integer getIdActividad() {
        return actividad.getIdActividad();
    }

    public void setIdActividad(Integer idActividad) {
        actividad.setIdActividad(idActividad);
    }

    public String getNomActividad() {
        return actividad.getNomActividad();
    }

    public void setNomActividad(String nomActividad) {
        actividad.setNomActividad(nomActividad);
    }

    public String getDesActividad() {
        return actividad.getDesActividad();
    }

    public void setDesActividad(String desActividad) {
        actividad.setDesActividad(desActividad);
    }

    public int getEstActividad() {
        return actividad.getEstActividad();
    }

    public void setEstActividad(int estActividad) {
        actividad.setEstActividad(estActividad);
    }

    public String getFecFinalizacion() {
        return Fecha.date2String(actividad.getFecFinalizacion());
    }

    public void setFecFinalizacion(String fecFinalizacion) {
        try {
            actividad.setFecFinalizacion(Fecha.string2Date(fecFinalizacion));
        } catch (ParseException ex) {
            Logger.getLogger(ActividadAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public int getAuAddUsr() {
        return actividad.getAuAddUsr();
    }

    public void setAuAddUsr(int auAddUsr) {
        actividad.setAuAddUsr(auAddUsr);
    }

    public String getAuAddDat() {
        return Fecha.date2String(actividad.getAuAddDat());
    }

    public void setAuAddDat(String auAddDat) {
        try {
            actividad.setAuAddDat(Fecha.string2Date(auAddDat));
        } catch (ParseException ex) {
            Logger.getLogger(ActividadAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Integer getAuModUsr() {
        return actividad.getAuModUsr();
    }

    public void setAuModUsr(Integer auModUsr) {
        actividad.setAuModUsr(auModUsr);
    }

    public Date getAuModDat() {
        return actividad.getAuModDat();
    }

    public void setAuModDat(Date auModDat) {
        actividad.setAuModDat(auModDat);
    }

    public Integer getIdTutor() {
        return actividad.getIdTutor().getIdTutor();
    }

    public void setIdTutor(Integer idTutor) {
        actividad.getIdTutor().setIdTutor(idTutor);
    }

    public Integer getIdTipoActividad() {
        return actividad.getIdTipoActividad().getIdTipoActividad();
    }

    public void setIdTipoActividad(Integer idTipoActividad) {
        actividad.getIdTipoActividad().setIdTipoActividad(idTipoActividad);
    }

    public Integer getIdranEdad() {
        return actividad.getIdranEdad().getIdRangoEdad();
    }

    public void setIdranEdad(Integer idranEdad) {
        actividad.getIdranEdad().setIdRangoEdad(idranEdad);
    }

    public Integer getIdAula() {
        return actividad.getIdAula().getIdAula();
    }

    public void setIdAula(Integer idAula) {
        actividad.getIdAula().setIdAula(idAula);
    }
    
    @Override
    public void reporteXls() {       
    }
    
}

